package com.lihepeng.leecode.string;

/**
 *给定一个字符串 s 和一个整数 k，从字符串开头算起，每 2k 个字符反转前 k 个字符。
 *
 * 如果剩余字符少于 k 个，则将剩余字符全部反转。
 * 如果剩余字符小于 2k 但大于或等于 k 个，则反转前 k 个字符，其余字符保持原样。
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/reverse-string-ii
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class Solution541 {
    public String reverseStr(String s, int k) {
        char[] cs = s.toCharArray();
        for (int i =0;i<s.length();i=i+k*2){
            int r = i+k-1;
            revert(cs,i,Math.min(r,s.length()-1));
        }
        return new String(cs);

    }
    void revert(char[]cs ,int l,int r){
        while (l<r) {
            char c = cs[l];
            cs[l] = cs[r];
            cs[r] =c;
            l++;r--;
        }
    }
}
